class IpUtilError extends ArgumentError {
  IpUtilError(String super.message);
}

class IpError extends ArgumentError implements IpUtilError {
  IpError(String super.message);
}

class CidrError extends ArgumentError implements IpUtilError {
  CidrError(String super.message);
}

class MaskError extends ArgumentError implements IpUtilError {
  MaskError(String super.message);
}

class IpRangeError extends RangeError implements IpUtilError {
  IpRangeError(super.message);

  IpRangeError.value(super.invalidValue, [super.name, super.message])
      : super.value();

  IpRangeError.range(super.invalidValue, super.minValue, super.maxValue,
      [super.name, super.message])
      : super.range();
}

class LeadingZerosError extends ArgumentError implements IpUtilError {
  LeadingZerosError(String super.message);
}
